/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Grid;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author guilherme
 */
@WebServlet(name = "Servlet_CSVGridRequest", urlPatterns = {"/Servlet_CSVGridRequest"})
public class Servlet_CSVGridRequest extends HttpServlet {

    private String grid_code = "SELECT 'csv_grid_err_code_001,erro,<b>valorpadrao</b>' as csvgrid";

    public String getGrid_code() {
        return grid_code;
    }

    public void setGrid_code(String grid_code) {
        this.grid_code = grid_code;
    }

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            try {
                Class.forName("com.mysql.jdbc.Driver");

                //Computador Guilherme --- String connectionUrl = "jdbc:mysql://localhost/trabalho_ti_2np?" + "user=root&password=nicken2013";
               //Servidor Banco Remoto MySQL --  String connectionUrl = "jdbc:mysql://sql2.freesqldatabase.com/sql239254" + "user=sql239254&password=jS4!aE3!";
                //String connectionUrl = "jdbc:mysql://sql2.freesqldatabase.com/sql239254" + "user=sql239254&password=jS4!aE3!";
                String connectionUrl = "jdbc:mysql://localhost/trabalho_ti_2np?" + "user=root&password=nicken2013";

                Connection con = (Connection) DriverManager.getConnection(connectionUrl);
                //@SuppressWarnings("unused")
                Statement stmt = (Statement) con.createStatement();
                ResultSet rs = stmt.executeQuery(this.getGrid_code());

                while (rs.next()) {
                    out.println(rs.getString("csvgrid"));
                    //System.out.println("vai "+b);
                }

            } catch (SQLException e) {
                System.out.println("SQL Exception: " + e.toString());
            } catch (ClassNotFoundException cE) {
                System.out.println("Class Not Found Exception: " + cE.toString());
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        /**
         * Este servlet monta uma grid conforme a consulta passada. A consulta
         * deverá retornar um CSV em formato HTML para gerar o valor desejado.
         * Existe uma estilização via CSS para deixar a tabela bonitinha.
         *
         * Para utilizar é necessário chamar este servlet passando o parâmetro
         * Servlet...?grid=1 - Desta forma uma consulta de código 1 será
         * executada e seu resultado será exibido, simples assim!
         *
         * A consulta deverá retornar apenas UM resultado. Preste atenção, UM
         * resultado só. Estou usando concatenação de valores para facilitar a
         * visualização. Não tente inventar moda, utilize o estilo criado para
         * trazer a consulta, mude apenas campos, valores. Caso tenha dúvida,
         * deixa que eu faço já que é bem simples.
         */
        try {
            processRequest(request, response);
            String grid_code = request.getParameter("grid");
            switch (grid_code) {
                case "1":
                    //Descrição: Hello World, só para entender como funciona 
                    this.setGrid_code("SELECT '<b>Hello World</b>' as csvgrid");
                    break;

                case "2":
                    //Descrição: Grid de listagem de clientes
                    this.setGrid_code("SELECT CONCAT( cli_nome, \",\", cli_cpf, \",\", cli_email, \",\", cli_cel, \",<img onclick='exibirCliente(\", cli_id, \")' src=http://icons.iconseeker.com/png/64/icandy-junior-toolbar/view-doc.png height=42 width=42>\" ) AS csvgrid FROM cliente;");
                    break;
                case "3":
                    //Descrição: Grid de listagem de clientes (Definitiva)
                    this.setGrid_code("SELECT csvgrid from view_grid_cliente");
                    break;

                default:
                    this.grid_code = "SELECT '<b>csvgrid_request_err</b>' as csvgrid";
            }
        } catch (SQLException ex) {
            Logger.getLogger(Servlet_CSVGridRequest.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}
